package top.zhangjianyong.blog.service;

import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import top.zhangjianyong.blog.entity.dto.BlogTagDTO;
import top.zhangjianyong.blog.entity.po.Tag;
import top.zhangjianyong.blog.params.tag.TagListParam;
import top.zhangjianyong.blog.params.tag.TagPageParam;
import top.zhangjianyong.blog.params.tag.TagRemoveParam;
import top.zhangjianyong.blog.params.tag.TagSaveParam;
import top.zhangjianyong.blog.params.tag.TagUpdateParam;
import top.zhangjianyong.blog.response.ApiResponse;

/**
 * 标签
 *
 * @author HDN
 * @since 2024/7/30 下午10:47
 */
public interface TagService extends IService<Tag> {

  ApiResponse page(TagPageParam param);

  ApiResponse save(TagSaveParam param);

  ApiResponse update(TagUpdateParam param);

  ApiResponse list(TagListParam param);

  ApiResponse remove(TagRemoveParam param);

  List<Tag> saveBatch(List<String> tags);

  BlogTagDTO listByBlog(Long blogId);

  CompletableFuture<BlogTagDTO> listByBlogAsync(Long blogId);

  ApiResponse listNotEmpty();
}
